cc-pocket · phase 1

Direction Study · Core 3

Three product directions, each drawn across the same three screens with identical content: Sessions, Chat, Approval. The directions differ in hierarchy, container strategy, status communication and interaction character — not in colour.

9 frames
390 × 844
3 directions
1:1 scale
A

Native Professional Utility

List-first and container-free. Hairlines and type weight carry the hierarchy instead of cards, so the content sits directly on the surface and reads at a glance. One primary action per screen, large targets, and status expressed as a small semantic mark inside the row it belongs to. Approval arrives as a sheet over the work it interrupts, so context is never lost.

Tokens
surface #0B0B0C · raised #141417
hairline rgba(255,255,255,.09) · radius 12
terracotta #C9613F — primary action only
semantic: run #4AA36B · wait #E0A33E
Geist 32/17/15/13 · Geist Mono 12 for paths
Motion
sheet 220ms ease-out · status pulse 1.6s
no list transitions · haptic on approval
01 · Sessions
9:41

Sessions

Panda · MacBook Pro · online
cc-pocket · ~/proj/app/cc-pocket
Active
Refactor auth module
Review the concurrency around the refresh mutex before I open the PR.
Claude · feat/auth-refactor · running 18m
1 approval waiting
Recent
Fix flaky socket test
The reconnect test still fails intermittently on CI.
Codex · fix/socket-test · 2h ago
Release notes 1.6
Summarize the user-visible changes from the last 12 commits.
Claude · main · yesterday
New session
02 · Chat
9:41
Refactor auth module default
Panda · MacBook Pro · ~/proj/app/cc-pocket · feat/auth-refactor
add a unit test for the stream parser
The parser now emits exactly one event when a frame is split across chunks.
Bash ./gradlew :protocol:test 42 passed
I’m checking the remaining call sites that read TokenStore
Running · 18m
+ Message Claude…
03 · Approval
9:41
Refactor auth module
Panda · MacBook Pro · ~/proj/app/cc-pocket · feat/auth-refactor
The parser now emits exactly one event when a frame is split across chunks.

Run command

Bash
queued 1/3
Medium risk 18s remaining
What it does
Runs the full test suite and uploads a coverage report to Codecov.
./gradlew test && bash scripts/upload-coverage.sh
Scope This task
Project ~/proj/app/cc-pocket
Evidence & details
Deny
Allow for this task
recommended · denies automatically at 0s
B

Agent Operations Console

Built for supervision. A persistent state strip, a semantic rail on every row and left-aligned monospace metadata make machine, agent, branch and run state scannable in one pass. The chat is a timeline with a gutter, so tool work and model output are structurally distinct. Approval escalates to a full-screen takeover with a visible queue — the decision owns the device until it is made.

Tokens
surface #0A0C0E · panel #10151A
rail 3px semantic · hairline #1C232A
amber #E2A33C = attention, never decoration
radius 6 · 8px baseline grid, 4px inner
Plex Sans 20/15/13 · Plex Mono 11 caps
Motion
state changes 120ms linear · countdown 1s ticks
2px indeterminate run bar · no easing flourish
01 · Sessions
9:41
PANDA MacBook Pro ONLINE
cc-pocket~/proj/app/cc-pocket
1
RUNNING
1
APPROVAL
2
RECENT
ACTIVE
Refactor auth module 18m
Review the concurrency around the refresh mutex before I open the PR.
CLAUDE feat/auth-refactor RUNNING
1 APPROVAL PENDING Review ›
RECENT
Fix flaky socket test 2h
The reconnect test still fails intermittently on CI.
CODEX fix/socket-test
Release notes 1.6 1d
Summarize the user-visible changes from the last 12 commits.
CLAUDE main
+New session
02 · Chat
9:41
Refactor auth module RUNNING
PANDA~/proj/app/cc-pocketfeat/auth-refactor
PERMISSION DEFAULT
YOU
09:41
add a unit test for the stream parser
CLAUDE
09:42
The parser now emits exactly one event when a frame is split across chunks.
TOOL
09:43
BASH exit 0 · 6.4s
./gradlew :protocol:test
42 passed
CLAUDE
I’m checking the remaining call sites that read TokenStore
RUNNING · 18m 3 tools · 1 queued
+ Message Claude…
03 · Approval
9:41
APPROVAL REQUIRED queued 1/3

Run command

BASH
18s
MEDIUM RISK 18s remaining · fails closed
WHAT IT DOES
Runs the full test suite and uploads a coverage report to Codecov.
COMMAND
./gradlew test && bash scripts/upload-coverage.sh
SCOPE This task
PROJECT ~/proj/app/cc-pocket
EVIDENCE Details
Deny
Allow for this task
RECOMMENDED
C

AI Work Companion

Replaces the near-black surface with warm paper, on the argument that long-running agent work is read more than it is operated. Elevation is spent once — on the session that is live — and everything else sits as a plain row. The transcript is set for reading, with tool work quieted into the margin. Approval leads with the plain-language consequence before the command, so the decision is understood before it is executed.

Tokens
paper #F6F3ED · card #FFFFFF · ink #22201D
hairline #E4DCD0 · radius 16 outer / 10 inner
terracotta #B4522F — single action colour
semantic: run #3E8C5F · wait #B9812A
Instrument Sans 28/17/16 · Plex Mono 12
Motion
240ms ease · breathing “Working” capsule 2.4s
cross-fade only · never slides content sideways
01 · Sessions
9:41
Panda · MacBook Pro online

Sessions

cc-pocket · ~/proj/app/cc-pocket
Now
running 18m Claude
Refactor auth module
Review the concurrency around the refresh mutex before I open the PR.
feat/auth-refactor
1 approval waiting Review
Earlier
Fix flaky socket test 2h ago
The reconnect test still fails intermittently on CI.
Codex · fix/socket-test
Release notes 1.6 yesterday
Summarize the user-visible changes from the last 12 commits.
Claude · main
New session
02 · Chat
9:41
Refactor auth module default
Panda · MacBook Pro · ~/proj/app/cc-pocket · feat/auth-refactor
add a unit test for the stream parser
The parser now emits exactly one event when a frame is split across chunks.
Bash ./gradlew :protocol:test
42 passed
I’m checking the remaining call sites that read TokenStore
Working 18m
+ Message Claude…
03 · Approval
9:41
Refactor auth module
Panda · MacBook Pro · ~/proj/app/cc-pocket · feat/auth-refactor
Approval · queued 1/3 18s remaining
Runs the full test suite and uploads a coverage report to Codecov.
Run command Bash Medium risk
./gradlew test && bash scripts/upload-coverage.sh
Scope This task
Project ~/proj/app/cc-pocket
Evidence & details
Deny
Allow for this task
Recommended. Denied automatically if the timer runs out.

Comparison

Criterion
A · Native Utility
B · Operations Console
C · Work Companion
Scan speed
Clear rows, but state lives inside the row
Rails, counters and aligned metadata read first
Reading-first; needs a second look for state
Trust & safety
Sheet keeps context; dismissible by habit
Takeover, visible queue, explicit fail-closed
Consequence stated first; risk cue is quieter
Information density
Moderate — three sessions per viewport
High — summary strip plus per-row tags
Low by choice — space spent on legibility
Emotional tone
Calm, neutralFeels like a system app the developer already trusts
Focused, industrialSerious under pressure; colder for routine reading
Warm, composedLong sessions feel legible rather than alarming
Implementation risk
LowPlain lists and one sheet; closest to today's code
MediumGutter timeline and takeover routing need real work
MediumA second light theme across every surface and state
Recommendation

Direction B · Agent Operations Console

The moments that define cc-pocket are supervisory: knowing which machine and branch an agent is on, noticing that something is waiting, and deciding correctly in seconds. B is the only direction that treats state as first-class structure — a semantic rail, a summary strip and aligned monospace metadata — and the only one where approval takes the whole screen with its queue visible, which is the right weight for an irreversible action with a timer on it.

The cost is tone: B reads colder during ordinary use, and its density needs discipline to keep from growing. If the team weights implementation speed over supervisory clarity, A is the fallback — it ships fastest and feels closest to a native system app.

Next phase, once a direction is chosen
Empty and disconnected states · approval queue beyond the first item · denied and timed-out outcomes · scroll and long-transcript behaviour.